#ifndef DOXYFILE_H
#define DOXYFILE_H

#include "IDoxyFile.h"
#include "RefrenceItem.h"

class DoxyFile : public IDoxyFile
{
public:

    /**
     * @brief DoxyFile The refrence to the doxygen file that should be loaded
     * @param refId The doxygen file name including it's path (.xml is added automatically)
     */
    DoxyFile(QString refId);

    /**
     * @brief loadFile Loads the file
     * @return True if the file was processed correctly
     */
    bool loadFile();
    /**
    * @brief getFileName Get the name of the file as represented by the file
    * @return The file name including it's path
    */
   virtual QString getFileName() const;

    /**
    * @brief getDoxRef
    * @return
    */
   virtual QString getDoxRef() const;

   /**
    * @brief getIncludedBy Gets all the files that also include this file
    * @param files
    */
   virtual void getIncludedBy(QList<RefItem> &files) const;


   /**
    * @brief getLocalIncludes Gets all the files that have been included by this class, that have also been processed by doxygen
    * @param files A list that will be populated with all of the local file includes
    */
   virtual void getLocalIncludes(QList<RefItem>& files) const;


   /**
    * @brief getExternalIncludes Gets all the files that are included by this class but have not been processed by doxygen
    * @param files A list of external to doxygen file includes.
    */
   virtual void getExternalIncludes(QStringList& files) const;

private:
    QString m_fileName;
    QString m_refId;
    QString m_xmlFileName;
    QList<RefItem> m_localIncludes;
    QStringList m_externalIncludes;
    QList<RefItem> m_includeBy;



};

#endif // DOXYFILE_H
